import service from "@/service";
import store from 'store'

// 获取路由信息来判断是否扫码分享进入的
export function shareLogin(res) {
    console.log(res)
    let query = res.query
    let data = {}
    if(query.scene){
        let arr = query.scene.split('and')
        let str = ''
        for(let i = 0; i < arr.length; i ++){
            if(i%2 == 0){
                str = arr[i]
            }else{
                data[str] = arr[i]
            }
        }
        uni.setStorageSync(`shareData`, data);
        if(!store.getters.login){
            setTimeout(()=>{
                uni.$emit('loginHandle', 'login');
            },2000)
            return
        }
        // if(!store.getters.phoneNum){
        //     setTimeout(()=>{
        //         uni.$emit('loginHandle', 'bindPhone');
        //     },2000)
        //     return
        // }
    }
}

/*
* 退出登录
* */
export function loginOut() {
    uni.setStorageSync('token', '');
    getUserVipInfo();
    store.commit('shoppingNum', 0);
    store.commit('login', false);
    store.commit('userInfo', {});
    store.commit('login', false);
    uni.showToast({
        title: `退出成功`,
        duration: 2500,
        icon: 'none'
    });
}

/*
 获取购物车的数量，并设置购物车数量
*/
export function getShoppingNum() {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '加载中',
        });
        service.homeService.shoppingAll({
            data: {},
            success: res => {
                uni.hideLoading();
                if (res.code === 200) {
                    if(!!res.result.books){
                        uni.setTabBarBadge({
                            index: 2,
                            text: `${res.result.books}`
                        });
                    } else {
                        uni.removeTabBarBadge({
                            index: 2
                        })
                    }
                    // 更新购物车数量
                    store.commit('shoppingNum', res.result.books)
                    resolve()
                } else {
                    uni.removeTabBarBadge({
                        index: 2
                    });
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                    reject()
                }
            },
            fail: ()=>{
                uni.hideLoading();
                reject()
            },
            complete: () => {
            },
        });
    })

}

/*
 获取用户信息
*/
export function getUserInfo() {
    let token = uni.getStorageSync('token');
    if(!token){
        return;
    }
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '加载中',
        });
        service.loginService.getUserInfo({
            data: {},
            success: res => {
                uni.hideLoading();
                if (res.code === 200) {
                    store.commit('userInfo', res.result);
                    store.commit('login', true);
                    // 存储用户绑定手机号
                    if(!res.result.status){
                        uni.setStorageSync('phoneNum',  res.result.purePhoneNumber);
                        store.commit('phoneNum', res.result.purePhoneNumber)
                    }
                    let shareData = uni.getStorageSync('shareData') || '';
                    if(shareData && store.getters.login){
                        service.mineService.Binding({
                            data: {...shareData},
                            success: res => {
                                uni.removeStorageSync('shareData');
                                getUserInfo();
                            },
                            fail: ()=>{

                            },
                            complete: () => {
                                uni.hideLoading();
                            },
                        });
                    }
                    resolve(res.result);
                } else {
                    store.commit('login', false);
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            fail: err => {
                uni.hideLoading();
                reject(err);
            },
            complete: () => {
            },
        });
    });
}


/*
 获取用户动态信息
*/
export function getUserVipInfo() {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '加载中',
        });
        service.loginService.getUserVipInfo({
            data: {},
            success: res => {
                uni.hideLoading();
                if (res.code === 200) {
                    store.commit('vipCardNum', res.result.vipCarDMemberNum);
                    store.commit('userVipInfo', res.result);
                    // 存储会员卡相关信息
                    uni.setStorageSync('vipCardNum',  res.result.vipCarDMemberNum);
                    resolve(res.result);
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            fail: err => {
                uni.hideLoading();
                reject(err);
            },
            complete: () => {
            },
        });
    });
}


/*
 添加购物车（心愿单）
*/
export function addShopOrCollect(type, name, booksId) {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '',
        });
        service.homeService[type]({
            data: {
                booksId
            },
            success: res => {
                uni.hideLoading();
                if (res.code === 200) {
                    // 加入/取消 购物车操作需要更新购物车当前数量，加入/取消心愿单操作，需要更新用户动态信息
                    if(name === 'shopping'){
                        getShoppingNum().then(()=>{
                            uni.showToast({
                                title: `${type === 'delShopping' ? '取消成功' : '添加成功'}`,
                                duration: 2500,
                                icon: 'none'
                            });
                        });
                    } else {
                        getUserVipInfo().then(()=>{
                            uni.showToast({
                                title: `${type === 'delCollect' ? '取消成功' : '添加成功'}`,
                                duration: 2500,
                                icon: 'none'
                            });
                        });
                    }
                    resolve()
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            error: err => {
                uni.hideLoading();
                reject(err);
            },
            complete: () => {
            },
        });
    });
}

/*
 获取书籍列表
*/
export function getBooks(params) {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '加载中',
        });
        service.homeService.getBooks({
            data: params,
            success: res => {
                if (res.code === 200) {
                    resolve(res.result || {})
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            error: err => {
                reject(err);
            },
            complete: () => {
                uni.hideLoading();
            },
        });
    });
}


/*
获取配置信息
*/
export function getConfInfo() {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '',
        });
        service.homeService.getConfInfo({
            data: {},
            success: res => {
                if (res.code === 200) {
                    store.commit('maxBookNum', res.result.maxBookNum);
                    resolve(res.result || {})
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            error: err => {
                reject(err);
            },
            complete: () => {
                uni.hideLoading();
            },
        });
    });
}


// 强制更新
function mustUpdate(updateManager){
    updateManager.onUpdateReady(function () {
        uni.showModal({
            title: '更新提示',
            content: '新版本已经准备好，是否重启应用？',
            success: function (res) {
                if (res.confirm) {
                    //3. 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                    updateManager.applyUpdate()
                } else if (res.cancel) {
                    //如果需要强制更新，则给出二次弹窗，如果不需要，则这里的代码都可以删掉了
                    uni.showModal({
                        title: '温馨提示~',
                        content: '本次版本更新涉及到新的功能添加，旧版本无法正常访问的哦~',
                        success: function (res) {
                            mustUpdate(updateManager)
                            return;
                            //第二次提示后，强制更新
                            if (res.confirm) {
                                // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                                updateManager.applyUpdate()
                            } else if (res.cancel) {
                                //重新回到版本更新提示
                                mustUpdate(updateManager)
                            }
                        }
                    })
                }
            }
        })
    })
    updateManager.onUpdateFailed(function () {
        // 新的版本下载失败
        uni.showModal({
            title: '已经有新版本了哟~',
            content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
        })
    })
}
// 提醒更新
function autoUpdate(updateManager){
    updateManager.onUpdateReady(() => {
        uni.showModal({
            title: '更新提示',
            content: '新版本已经准备好，是否重启应用？',
            success: res => {
                if (res.confirm) {
                    // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                    updateManager.applyUpdate();
                }
            }
        });
    });
}

// 更新版本
export function updateManager(hasUpdate) {
    const updateManager = uni.getUpdateManager()
    // 强制更新
    if(hasUpdate){
        mustUpdate(updateManager)
    } else {
        autoUpdate(updateManager)
    }
}

/*
验证码验证
*/
export function vCode(params) {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '',
        });
        service.loginService.vCode({
            data: params,
            success: res => {
                if (res.code === 200) {
                    resolve(res.result || {})
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            error: err => {
                reject(err);
            },
            complete: () => {
                uni.hideLoading();
            },
        });
    });
}


/*
快递公司查询
*/
export function inquiryLogisticsCom(params) {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '',
        });
        service.mineService.inquiryLogisticsCom({
            data: params,
            success: res => {
                if (res.code === 200) {
                    resolve(res.result || {})
                } else {
                    uni.showToast({
                        title: `${res.resultMsg}`,
                        duration: 2500,
                        icon: 'none'
                    });
                }
            },
            error: err => {
                reject(err);
            },
            complete: () => {
                uni.hideLoading();
            },
        });
    });
}
